A virtual machine (“VM”) is a software construct or the like operating on a computing device or the like (e.g., a host) for the purpose of providing an emulated machine or system. Typically, although not necessarily, the VM is an application or the like, and may be employed on the host to instantiate an application or the like while at the same time isolating such application from such host device or from other applications on such host. In one typical situation, the host can accommodate a plurality of deployed VMs, each VM performing some predetermined function by way of resources available from the host.
Notably, each VM as hosted on a computing device is for all intents and purposes a computing machine, although in virtual form, and thus represents itself as such both to the application thereof and to the outside world. As an example, the OS and/or an application thereof can and in fact do issue hardware requests for hardware resources of the VM, even though the VM might not in reality have such hardware resources. Instead, and as may be appreciated, such hardware requests are intercepted or otherwise redirected toward the host, with the requesting OS and/or application thereof either accessing virtualized hardware as it would physical hardware or communicating with the VMM through special VMM-provided interfaces.
Typically, although not necessarily, a host deploys each VM thereof in a separate partition, address space, processing area, and/or the like. Such host may include a virtualization layer with a virtual machine monitor or the like that acts as an overseer application or hypervisor, where the virtualization layer oversees and/or otherwise manages supervisory aspects of each VM of the host, and acts as a possible link between each VM and the outside world. The hypervisor may be a separate application running in its own address space or may be integrated more closely with a host operating system, either directly or as an operating system extension of some sort, such as a device driver. Notably, the hypervisor of the host may intercept or otherwise redirect hardware requests that originate from each VM of the host and/or an application thereof, and may at least assist in servicing the requests, again with the requesting VM and/or application thereof being none the wiser.
Many computing systems comprise multiple processors. Processors in a uniprocessor or multiprocessor virtual machine environment may operate in a guest mode or in a hypervisor mode. When running in a guest mode, a processor uses virtual machine definitions to manage the virtual machine's guest operating system and applications, translating arguments and managing system resources without intervention from the hypervisor. From time to time, the guest operating system or applications may need system resources that must be managed by the hypervisor. As examples, the hypervisor may be required for error handling, system faults, intercepts for emulating devices, or interrupt handling. In these situations, the processor operates in a hypervisor mode.
In some systems, processors are virtualized. A virtual processor is a software construct or the like operating on a computing device or the like for the purpose of providing an emulated processor. Multiple virtual processors can be implemented on a single physical processor or on multiple physical processors. One technique used to partition a computer into a number of virtual machines is to multiplex more than one virtual processor on one or more physical processors.